def find_narcissistic_numbers_up_to_1000():
    """
    查找并输出1000以内的所有水仙花数。
    水仙花数是指一个 n 位数 (n >= 3)，它的每个位上的数字的 n 次幂之和等于它本身。
    在1000以内，特指三位数的水仙花数，即每个位上的数字的3次幂之和等于它本身。
    """
    narcissistic_numbers = []
    print("1000以内（三位数）的水仙花数有：")

    # 水仙花数至少是三位数，所以在1000以内，我们只需要检查100到999之间的数
    for num in range(100, 1000):
        # 将数字转换为字符串，方便获取每一位
        s_num = str(num)

        # 获取数字的位数 (对于100到999，n 都是 3)
        n = len(s_num)

        # 计算每一位数字的 n 次幂之和
        sum_of_powers = 0
        for digit_char in s_num:
            digit = int(digit_char)  # 将字符转换为整数
            sum_of_powers += digit ** n  # 计算 n 次幂并累加

        # 判断是否为水仙花数
        if sum_of_powers == num:
            narcissistic_numbers.append(num)
            print(f"{num} = {' + '.join([f'{d}^{n}' for d in s_num])}")
            # 例如：153 = 1^3 + 5^3 + 3^3

    if not narcissistic_numbers:
        print("没有找到水仙花数。")

    return narcissistic_numbers


# 调用函数查找水仙花数
if __name__ == "__main__":
    result = find_narcissistic_numbers_up_to_1000()
    print(f"\n总共找到 {len(result)} 个水仙花数：{result}")
